package com.ethannhu.todaynews.component.ad

import android.content.Intent
import android.os.CountDownTimer
import android.view.View
import com.ethannhu.superui.extension.show
import com.ethannhu.todaynews.R
import com.ethannhu.todaynews.activity.BaseViewModelActivity
import com.ethannhu.todaynews.component.main.MainActivity
import com.ethannhu.todaynews.databinding.ActivityAdBinding
import com.ethannhu.todaynews.util.FileUtil
import com.ethannhu.todaynews.util.ImageUtil
import com.ethannhu.todaynews.util.IntentUtil
import com.ethannhu.todaynews.util.PreferenceUtil
import com.ethannhu.todaynews.util.Constant
import java.io.File

class AdActivity : BaseViewModelActivity<ActivityAdBinding>() {
    private var data: Ad? = null
    private var action: String? = null
    private var adCountDownTimer: CountDownTimer? = null
    override val enableInset: Boolean = false // 沉浸式
    //private var player: TXVodPlayer? = null

    override fun initData() {
        super.initData()

        //获取广告信息
        data = PreferenceUtil.getSplashAd()
        if (data == null) {
            next()
            return
        }

        //显示广告信息
        show()
        binding.shimmer.startShimmer()
    }

    override fun initListeners() {
        super.initListeners()
        //跳过广告按钮
        binding.skip.setOnClickListener(View.OnClickListener { //取消倒计时
            cancelCountDown()
            next()
            //AnalysisUtil.onSkipAd(hostActivity, PreferenceUtil.getUserId())
        })

        //点击广告按钮
        binding.primary.setOnClickListener(View.OnClickListener { //取消倒计时
            cancelCountDown()
            action = Constant.ACTION_AD
            next()
        })
    }

    private fun show() {
        val targetFile: File = FileUtil.adFile(hostActivity, data!!.icon!!)
        if (!targetFile.exists()) {
            //记录日志，因为正常来说，只要保存了，文件不能丢失
            next()
            return
        }
        binding.adControl.show()
        when (data!!.style) {
            Constant.VALUE0 -> showImageAd(targetFile)
            //Constant.VALUE10 -> showVideoAd(targetFile)
        }
    }

    /**
     * 显示视频广告
     *
     * @param data
     */
//    private fun showVideoAd(data: File) {
//        binding.video.show()
//        binding.preload.show()
//
//        //在要用到的时候在初始化，更节省资源，当然播放器控件也可以在这里动态创建
//        //设置播放监听器
//
//        //创建 player 对象
//        player = TXVodPlayer(hostActivity)
//
//        //静音，当然也可以在界面上添加静音切换按钮
//        player!!.setMute(true)
//
//        //关联 player 对象与界面 view
//        player!!.setPlayerView(binding.video)
//
//        //设置播放监听器
//        player!!.setVodListener(this)
//
//        //铺满
//        binding.video.setRenderMode(TXLiveConstants.RENDER_MODE_FULL_FILL_SCREEN)
//
//        //开启硬件加速
//        player!!.enableHardwareDecode(true)
//        player!!.startPlay(data.absolutePath)
//    }

    /**
     * 显示图片广告
     *
     * @param data
     */
    private fun showImageAd(data: File) {
        ImageUtil.showLocalImage(binding.image, data.absolutePath)
        startCountDown(5000)
    }

    private fun startCountDown(data: Int) {
        //创建倒计时
        adCountDownTimer = object : CountDownTimer(data.toLong(), 1000) {
            /**
             * 每次间隔调用
             *
             * @param millisUntilFinished
             */
            override fun onTick(millisUntilFinished: Long) {
                binding.skip.setText(
                    getString(
                        R.string.skip_ad_count,
                        millisUntilFinished / 1000 + 1
                    )
                )
            }

            /**
             * 倒计时完成
             */
            override fun onFinish() {
                //执行下一步方法
                next()
            }
        }

        //启动定时器
        adCountDownTimer!!.start()
    }

    override fun onDestroy() {
        super.onDestroy()
        cancelCountDown()
    }

    private fun cancelCountDown() {
        if (adCountDownTimer != null) {
            adCountDownTimer!!.cancel()
            adCountDownTimer = null
        }
    }

    private fun next() {
        val intent = Intent(hostActivity, MainActivity::class.java)
        IntentUtil.cloneIntent(getIntent(), intent)
        if (data != null) {
            //添加广告
            intent.putExtra(Constant.AD, data)
        }
        if (action != null) {
            //要跳转到广告界面
            //先启动主界面的
            //好处是
            //用户在广告界面
            //返回正好看到的主界面
            //这样才符合应用逻辑
            intent.action = action
        }
        startActivity(intent)

        //关闭当前界面
        finish()
    }

    override fun onPause() {
        super.onPause()
        //pausePlay()
    }

    override fun onResume() {
        super.onResume()
        //startPlay()
    }

//    private fun startPlay() {
//        if (player != null) {
//            player!!.resume()
//        }
//    }

//    private fun pausePlay() {
//        if (player != null) {
//            player!!.pause()
//        }
//    }

    //region 视频播放监听
    /**
     * 播放事件
     *
     * @param txVodPlayer
     * @param event
     * @param bundle
     */
//    override fun onPlayEvent(txVodPlayer: TXVodPlayer, event: Int, bundle: Bundle) {
//        if (TXLiveConstants.PLAY_EVT_PLAY_BEGIN == event) {
//            //视频播放开始，如果有转菊花什么的这个时候该停了
//        } else if (event == TXLiveConstants.PLAY_EVT_RCV_FIRST_I_FRAME) {
//            // 视频I帧到达，开始播放
//        } else if (TXLiveConstants.PLAY_EVT_PLAY_END == event) {
//            //视频播放结束
//            next()
//        } else if (TXLiveConstants.PLAY_EVT_PLAY_PROGRESS == event) {
//            if (adCountDownTimer != null) {
//                return
//            }
//
//            // 加载进度, 单位是毫秒
////                int duration_ms = bundle.getInt(TXLiveConstants.EVT_PLAYABLE_DURATION_MS);
////                mLoadBar.setProgress(duration_ms);
//
//            // 播放进度, 单位是毫秒
//            val progress = bundle.getInt(TXLiveConstants.EVT_PLAY_PROGRESS_MS)
//
//            // 视频总长, 单位是毫秒
//            val duration = bundle.getInt(TXLiveConstants.EVT_PLAY_DURATION_MS)
//            startCountDown(duration)
//        }
//    }
//
//    /**
//     * 网络状态
//     *
//     * @param txVodPlayer
//     * @param bundle
//     */
//    override fun onNetStatus(txVodPlayer: TXVodPlayer, bundle: Bundle) {
//
//    }
    //endregion

//    override fun pageId(): String? {
//        return "Ad"
//    }
}